package objetosNegocio;

import java.util.ArrayList;

import javax.persistence.EntityManager;
import javax.persistence.Query;

import entidades.Valoracion;


public class ObjetoNegocioValoracion 
{
	private int cantidadValoracionesPosirivas;
	private int cantidadValoracionesNegativas;
	private int cantidadValoracionesNeutras;
	
	private EntityManager manager;
	
	public ObjetoNegocioValoracion(EntityManager manager)
	{
		this.manager = manager;
	}
	
	public Valoracion crearValoracion(Valoracion valoracion)
	{
		manager.persist(valoracion);
		
		Query query = manager.createQuery("select v from Valoracion v where v.usuario=:usuario and v.vendedor=:vendedor and v.fecha=:fecha");
		query.setParameter("usuario", valoracion.getUsuario());
		query.setParameter("vendedor", valoracion.getVendedor());
		query.setParameter("fecha", valoracion.getFecha());
		
		return (Valoracion) query.getSingleResult();
	}
	public ArrayList<Valoracion> obtenerValoracion(Valoracion valoracion)
	{
		ArrayList<Valoracion> valoraciones = null;
		Query query = manager.createQuery("select v from Valoracion v where v.vendedor=:vendedor order by fecha desc");
		query.setParameter("vendedor", valoracion.getVendedor());
		
		valoraciones = (ArrayList<Valoracion>) query.getResultList();
		
		if(valoraciones.size()>0)
		{
			for (int i = 0; i < valoraciones.size(); i++)
			{
				if(valoraciones.get(i).getVoto().getCalificacion().equalsIgnoreCase("positivo"))
				{
					cantidadValoracionesPosirivas++;
				}
				if(valoraciones.get(i).getVoto().getCalificacion().equalsIgnoreCase("neutro"))
				{
					cantidadValoracionesNeutras++;
				}
				if(valoraciones.get(i).getVoto().getCalificacion().equalsIgnoreCase("negativo"))
				{
					cantidadValoracionesNegativas++;
				}
			}
			
			return valoraciones;
		}
		
		return null;
	}
	public int getCantidadValoracionesPositivas() 
	{
		return cantidadValoracionesPosirivas;
	}

	public int getCantidadValoracionesNegativas()
	{
		return cantidadValoracionesNegativas;
	}

	public int getCantidadValoracionesNeutras()
	{
		return cantidadValoracionesNeutras;
	}
}
